package com.danielececi.utils;

import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

import android.util.Log;

import com.danielececi.constants.IConstants;

public class Utility {
	
	/**
	 * Converte la data passata come parametro in stringa formattandola secondo il pattern indicato 
	 * @param date
	 * @param pattern
	 * @return La stringa indicante la data nel formato desiderato
	 */
	public static String dateToString(Date date, String pattern){
		String dataSting = "";
		
		SimpleDateFormat formatoData = new SimpleDateFormat(pattern, Locale.ITALY);
		
		dataSting = formatoData.format(date);
		
		return dataSting;
	}
	
	/**
	 * Converte la stringa passata come parametro in Date parsandola secondo il pattern indicato
	 * @param dataStringa
	 * @param pattern
	 * @return Date valorizzato con la data indicata nella stringa passata come parametro
	 * @throws ParseException
	 */
	public static Date stringToDate(String dataStringa, String pattern) throws ParseException{
		Date data = new Date();
		
		SimpleDateFormat formatoData = new SimpleDateFormat(pattern, Locale.ITALY);
		
		data = formatoData.parse(dataStringa);
		
		return data;
	}
	
	/**
	 * Converte una stringa contenente un Double nel corrispettivo valore numerico
	 * @param toConvert
	 * @return il valore numerico della stringa toConvert
	 */
	public static double stringToDouble(String toConvert){
		double converted = 0;
		
		try{
			converted = Double.parseDouble(toConvert);
		} catch (NumberFormatException ex){
			Log.e(IConstants.LOG_UTILITY, ex.getMessage());
		}
		
		return converted;
	}
	
	/**
	 * Converte una stringa contenente un Int nel corrispettivo valore numerico
	 * @param toConvert
	 * @return il valore numerico della stringa toConvert
	 */
	public static int stringToInt(String toConvert){
		int converted = 0;
		
		try{
			converted = Integer.parseInt(toConvert);
		} catch (NumberFormatException ex){
			Log.e(IConstants.LOG_UTILITY, ex.getMessage());
		}
		
		return converted;
	}
	
	/**
	 * Formatta l'importo passato in input
	 * @param valore
	 * @return una stringa contenente l'importo formattato
	 */
	public static String formattaImporto(double valore){
		DecimalFormat df = new DecimalFormat(IConstants.FORMATO_IMPORTO);

		if(df.format(valore).equals("-0"))
			return "0";

		return df.format(valore);
	}
}
